import { RouteRecordRaw } from 'vue-router'

/**
 * @description 使用递归扁平化菜单，方便添加动态路由
 * @param {Array} menuList 菜单列表
 * @returns {Array}
 */
export function getFlatMenuList(menuList: RouteRecordRaw[]): RouteRecordRaw[] {
	let newMenuList: RouteRecordRaw[] = JSON.parse(JSON.stringify(menuList))
	return newMenuList.flatMap((item) => [item, ...(item.children ? getFlatMenuList(item.children) : [])])
}

/**
 * @description 使用递归过滤出需要渲染在左侧菜单的列表 (需剔除 isHide == true 的菜单)
 * @param {Array} menuList 菜单列表
 * @returns {Array}
 * */
export function getShowMenuList(menuList: RouteRecordRaw[]) {
	let newMenuList: RouteRecordRaw[] = JSON.parse(JSON.stringify(menuList))
	return newMenuList.filter((item) => {
		item.children?.length && (item.children = getShowMenuList(item.children))
		return !item.meta?.isHide
	})
}
/**
 * 获取图标类名
 *
 * @param icon 图标名称
 * @returns 返回图标类名
 */
export function getIconClassName(icon: string) {
	if (!icon) return ''
	if (icon.startsWith('i-ep')) return icon.toLowerCase()
	return `i-ep-${icon.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()}`
}
